package midi;

import javax.sound.midi.MidiChannel;
import javax.sound.midi.Synthesizer;

/**
 * Classe responsável pela abstração de uma faixa de instrumentos, em um canal,
 * dada uma sequência de notas.
 * 
 * @author tigreped
 * 
 */

public class Faixa implements Runnable
{
	protected Synthesizer synthesizer;
	protected MidiChannel canal;
	protected Notas notas;

	public Faixa(Synthesizer synthesizer, MidiChannel canal,
			Notas notas)
	{
		this.synthesizer = synthesizer;
		this.canal = canal;
		this.notas = notas;
	}

	public void run()
	{
		for (Nota nota : notas.getArray())
		{
			// TODO: trocar isso pela mensagem MIDI.
			canal.noteOn(nota.getNota(), nota.getIntensidade());
			try
			{
				Thread.sleep(nota.getDuracao());
			}
			catch (InterruptedException e)
			{
				break;
			}
			finally
			{
				canal.noteOff(nota.getNota());
			}
		}
	}
}